<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2015/8/19
 * Time: 11:18
 */

namespace frontend\modules\v1\controllers;
use frontend\controllers\BaseController;
use frontend\modules\manager\models\ProductForm;
use Yii;
use common\models\Product;
use common\models\Business;
use yii\data\ArrayDataProvider;
use yii\db\Query;

class ProductController extends BaseController {

    /** 详情数据列返回 */
    public $selectListParam = array(
        'product.id',
        'product.title',
        'product.banner_pic',
        'product.description',
        'product.share_num',
        'product.read_num',
        'product.code_url',
        'product.status',
        'product.created_at',
        'product.updated_at'
    );

    /** 详情数据列返回 */
    public $selectViewParam = array(
        'product.id',
        'product.title',
        'product.description',
        'product.is_brand',
        'product.is_home',
        'product.music',
        'product.change_status',
        'product.pics'
    );

    /**
     * 查询作品列表接口
     * @param page 页数 从0开始
     * @param pageSize 条数
     */
    public function actionList()
    {
        /** 验证身份 */
        $isGuest = Yii::$app->user->getIsGuest();
        /** 未登陆 */
        if($isGuest){
            return $this->responseError('当前用户未登陆.');
        }

        /** 已登录 */
        $id = Yii::$app->user->getId();
        /** 校验参数信息 */
        if(!$this->postData){
            return $this->responseError("参数信息为空.");
        }
        /** 当前页数 从0开始 */
        $page = $this->postData['page'] == null ? 0 : intval($this->postData['page']);
        /** 每页显示条数 */
        $pageSize = $this->postData['pageSize'] == null ? 10 : intval($this->postData['pageSize']);

        /** 查询作品信息信息 */
        $query = new Query();
        /** 分页 */
        $provider = new ArrayDataProvider([
            'allModels' => $query->select($this->selectListParam)->from('product')
                ->innerJoin('business', 'product.businessId = business.id')
                ->where(['business.id' => $id])->all(),
            'sort' => [
                'attributes' => ['product.id'],
            ],
            'pagination' => [
                'page' => $page,
                'pageSize' => $pageSize,
            ],
        ]);

        $datas = array();
        /** 获取数据 */
        $models = $provider->getModels();
        if($models){
            foreach($models as $key => $value){
                $value['created_at'] = date('Y-m-d H:i:s', $value['created_at']);
                $value['updated_at'] = date('Y-m-d H:i:s', $value['updated_at']);
                $datas[] = $value;
            }
        }
        /** 数据总条数 */
        $totalCount = $provider->getTotalCount();

        /** 返回数据 */
        $returnData = array();
        $returnData['list'] = $datas;
        $returnData['totalCount'] = $totalCount;
        return $this->responseFormat($returnData);
    }

    /**
     * 查询作品详情接口
     * @param pid 作品Id
     */
    public function actionView()
    {
        /** 验证身份 */
        $isGuest = Yii::$app->user->getIsGuest();
        /** 未登陆 */
        if($isGuest){
            return $this->responseError('当前用户未登陆.');
        }

        /** 校验参数信息 */
        if(!$this->postData){
            return $this->responseError("参数信息为空.");
        }
        /** 校验是否存在作品Id */
        if(empty($this->postData['pid'])){
            return $this->responseError('pid is null');
        }

        /** 已登录 */
        $id = Yii::$app->user->getId();
        /** 查询作品信息信息 */
        $query = new Query();
        $models = $query->select($this->selectViewParam)->from('product')
            ->innerJoin('business', 'product.businessId = business.id')
            ->where(array('product.id' => $this->postData['pid'], 'business.id' => $id))
            ->all();

        /** 校验查询数据 */
        if(!$models){
            return $this->responseFail('数据已经丢失');
        }

        /** 返回信息 */
        $resultData = array();
        $resultData['detail'] = $models;
        return $this->responseFormat($resultData);
    }

    /**
     * 新增作品接口
     * @param title 作品名称
     * @param banner_pic 封面图
     * @param description 作品描述
     * @param is_brand 是否显示品牌 0否 1是
     * @param is_home 是否显示商家主页 0否 1是
     * @param music 背景音乐路径
     * @param change_status 页面切换 1上下切换 2折叠切换 3立体切换
     * @param pics 上传图片
     * @param auth_key
     */
    public function actionAdd()
    {
        /** 验证身份 */
        $isGuest = Yii::$app->user->getIsGuest();
        /** 未登陆 */
        if($isGuest){
            return $this->responseError('当前用户未登陆.');
        }

        /** 校验参数信息 */
        if(!$this->postData){
            return $this->responseError("参数信息为空.");
        }
        /** 校验auth_key */
        if(empty($this->postData['auth_key'])){
            return $this->responseError('auth_key is null');
        }
        /** 校验商家 */
        $business = Business::findByAuthKey($this->postData['auth_key']);
        if(!$business){
            return $this->responseError('business info is wrong.');
        }

        /** 接收数据 */
        $productForm = new ProductForm();
        $productForm->title = $this->postData['title'];
        $productForm->description = $this->postData['description'];
        $productForm->banner_pic = $this->postData['banner_pic'];
        $productForm->is_brand = $this->postData['is_brand'];
        $productForm->is_home = $this->postData['is_home'];
        $productForm->music = $this->postData['music'];
        $productForm->change_status = $this->postData['change_status'];
        $productForm->pics = $this->postData['pics'];
        $productForm->businessId = Yii::$app->user->getId();

        /** 返回数据 */
        $resultData = array();
        /** 保存 */
        $bool = $productForm->add();
        if($bool){
            /** 成功返回 */
            return $this->responseFormat($resultData);
        }

        /** 失败返回 */
        if ($productForm->errors) {
            foreach ($productForm->errors as $key => $info) {
                $resultData[$key] = $info;
            }
        }
        return $this->responseError($resultData);
    }

    /**
     * 编辑作品接口
     * @param title 作品名称
     * @param banner_pic 封面图
     * @param description 作品描述
     * @param is_brand 是否显示品牌 0否 1是
     * @param is_home 是否显示商家主页 0否 1是
     * @param music 背景音乐路径
     * @param change_status 页面切换 1上下切换 2折叠切换 3立体切换
     * @param pics 上传图片
     * @param auth_key
     * @param pid 作品Id
     */
    public function actionEdit()
    {
        /** 验证身份 */
        $isGuest = Yii::$app->user->getIsGuest();
        /** 未登陆 */
        if($isGuest){
            return $this->responseError('当前用户未登陆.');
        }

        /** 校验参数信息 */
        if(!$this->postData){
            return $this->responseError("参数信息为空.");
        }
        /** 校验auth_key */
        if(empty($this->postData['auth_key'])){
            return $this->responseError('auth_key is null');
        }
        /** 校验商家 */
        $business = Business::findByAuthKey($this->postData['auth_key']);
        if(!$business){
            return $this->responseError('business info is wrong.');
        }

        /** 接收数据 */
        $productForm = new ProductForm();
        $productForm->id = $this->postData['pid'];
        $productForm->title = $this->postData['title'];
        $productForm->description = $this->postData['description'];
        $productForm->banner_pic = $this->postData['banner_pic'];
        $productForm->is_brand = $this->postData['is_brand'];
        $productForm->is_home = $this->postData['is_home'];
        $productForm->music = $this->postData['music'];
        $productForm->change_status = $this->postData['change_status'];
        $productForm->pics = $this->postData['pics'];

        /** 返回数据 */
        $resultData = array();
        /** 保存 */
        $bool = $productForm->edit();
        if($bool){
            /** 成功返回 */
            return $this->responseFormat($resultData);
        }

        /** 失败返回 */
        if ($productForm->errors) {
            foreach ($productForm->errors as $key => $info) {
                $resultData[$key] = $info;
            }
        }
        return $this->responseError($resultData);
    }
}